package com.waypolice.manager.service;

import com.waypolice.pojo.CmsJudItem;
import com.waypolice.pojo.CmsJudVolume;
import com.waypolice.pojo.CmsJudVolumeExample;
import com.waypolice.pojo.CmsOriginaltext;
import io.swagger.models.auth.In;
import net.sf.json.JSONArray;

import java.util.List;
import java.util.Map;

/**
 * @Description 卷件管理Service
 * @Author wangrang
 * @Date Created in 14:39 2019/3/12
 * @Modified By:
 */
public interface VolAndItemService {


    /**
     * 卷信息查询,根据创建时间排序
     * @return
     */
    List<CmsJudVolume> selectAll();

    /**
     * 卷信息查询,根据创建时间排序
     * @return
     */
    List<CmsJudVolume> selectAllByQueryParms(CmsJudVolumeExample cmsJudVolumeExample);

    /**
     * 根据卷volId查询卷信息
     * @return
     */
    CmsJudVolume selectCmsJudVolumeByVolId(Long volId);

    /**
     * 件信息查询,根据创建时间排序
     * 0:desc  1:asc 2:按照件的序号进行排序
     * @return
     */
    List<CmsJudItem> selectAllByVolId(Long volId, Integer flag) ;

    /**
     * 根据卷的Id删除空卷
     * @param volId
     * @return
     */
    int deleteVolume(Long volId);

    /**
     * 根据卷的Id删除卷及卷内件和原文
     * @param volId
     * @return
     */
    int deleteVolumeAndAllItem(Long volId) throws Exception;

    /**
     * 根据卷的Id删除卷及卷内件和原文
     * @param volId
     * @return
     */
    int deleteAllItemAndYuanWen(Long volId) throws Exception;

    /**
     * 根据卷Id修改卷信息(不进行件和原文校验)
     * @return
     */
    int updateByPrimaryKeySelectiveNoCheck(CmsJudVolume cmsJudVolume);

    /**
     * 根据件主键查询实体
     * @param itemId
     * @return
     */
    CmsJudItem selectByItemId(Long itemId);

    /**
     * 根据件主键查找已上传的原图地址
     * @param itemId
     * @return
     */
    String selectByPojo(Long itemId);

    /**
     * @author:zyp
     * @description 根据主键修改件的信息
     * @date: 2019/3/14 16:50
     * @return 
     */
    void updateItemByPrimaryKeySelective(CmsJudItem cmsJudItem); 
    
    /**
     * @author:zyp
     * @description 根据id获取 当前卷 或 件 的具体 载体类型 （有实体 无实体  共存）
     * @date: 2019/3/19 9:11
     * @return 
     */
    String getCarrierType(String type,String id);

    /**
     * 获取档号
     * @param cmsJudVolume
     * @return error:构成档号的字段为空
     */
    String getFileNumber(CmsJudVolume cmsJudVolume) throws Exception;

    /**
     * @author:zyp
     * @description 获取我的借阅的所有件的信息
     * @date: 2019/3/21 17:40
     * @return 
     */
    JSONArray getItemForMyBorrow(String parentid, Long fileShape);
    
    /**
     * @author:zyp
     * @description 通过id数组 修改件的状态
     * @date: 2019/3/25 15:19
     * @return 
     */
    void updateItemStatusByIds(long itemStatus,String[] ids);
    
    /**
     * @author:zyp
     * @description 根据卷id，将旗下的件修改件状态
     * @date: 2019/4/23 17:16
     * @return 
     */
    void updateItemStatusByVoId(long itemStatus,Long voId);

    /**
     * @author:zyp
     * @description 对多卷进行查询件
     * @date: 2019/4/4 14:20
     * @return
     */
    List<CmsJudItem> selectAllByVolIds (List<String> ids);

    /**
     * @author:zyp
     * @description 根据卷id 查看当前卷中是否存在其他状态的文件
     * @date: 2019/6/6 10:20
     * @return 
     */
    int isOtherStatusByVoldId(long voId);


}
